package com.miyu.system.controller.menu;

import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.miyu.system.pojo.system.SysMenu;
import com.miyu.system.service.menu.SysMenuService;
import com.miyu.system.utils.enumeration.R;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 系统菜单控制器
 * @author MIYU
 */
@RestController
@RequestMapping("sys-menu")
@RequiredArgsConstructor
public class SysMenuController {

    private  final SysMenuService sysMenuService;
    /**
     * 系统菜单编辑
     * @param menu 参数个数
     * @return {@link JSONObject}
     */
    @RequestMapping("sysMenuEdit")
    public SysMenu sysMenuEdit(@RequestBody SysMenu menu){
//        SysMenu menu =  JSONObject.parseObject(params.toString(), SysMenu.class);
        menu = sysMenuService.sysMenuEdit(menu);
        return menu;
    }

    /**
     * 查询sys菜单
     * 菜单管理页面查询
     * @param params 参数个数
     * @return {@link JSONArray}
     */
    @RequestMapping("querySysMenu")
    public JSONArray querySysMenu(@RequestBody  JSONObject params){
        return  sysMenuService.querySysMenu(params);
    }

    /**
     * 删除系统菜单
     *
     * @param params 参数个数
     * @return {@link JSONObject}
     */
    @RequestMapping( "deleteMenu")
    public JSONObject delSysMenu(@RequestBody  JSONObject params){

        SysMenu menu =  JSONObject.parseObject(params.toString(), SysMenu.class);
        return  sysMenuService.delSysMenu(menu);
    }

    /**
     * 获取系统菜单通过权限
     * 左侧菜单查询
     * @param params 参数个数
     * @return {@link JSONArray}
     */
    @RequestMapping("getSysMenuByAuthority")
    public JSONArray getSysMenuByAuthority(@RequestBody  JSONObject params){
        return  sysMenuService.getSysMenuByAuthority(params);
    }

    /**
     * 获取系统菜单通过权限
     * 左侧菜单查询 （ cos）
     * @param params 参数个数
     * @return {@link JSONArray}
     */
    @RequestMapping("getCosMenuByAuthority")
    public JSONArray getCosMenuByAuthority(@RequestBody  JSONObject params){
        return  sysMenuService.getCosMenuByAuthority(params);
    }


    /**
     * 获取菜单路由
     * @return {@link JSONArray}
     */
    @RequestMapping("getRoutes")
    public JSONArray getRoutes(){
        return sysMenuService.getRoutes();
    }

    /**
     * 按空间 ID 获取菜单列表
     *
     * @param params 参数
     * @return {@link JSONArray }
     */
    @RequestMapping("getMenuListBySpaceId")
    public JSONArray getMenuListBySpaceId(@RequestBody JSONObject params){
        return sysMenuService.getMenuListBySpaceId(params);
    }
}
